class socketserver.TCPServer(server_address, RequestHandlerClass, bind_and_activate=True)
它使用Internet TCP协议,该协议在客户机和服务器之间提供连续的数据流。
如果bind_and_activate为true,构造函数会自动尝试调用server_bind()和server_activate()。
其他参数传递给BaseServer基类。
class socketserver.UDPServer(server_address, RequestHandlerClass, bind_and_activate=True)
它使用数据报,这是离散的信息包,可能会无序地到达或在传输中丢失。
参数与TCPServer相同。
class socketserver.UnixStreamServer(server_address, RequestHandlerClass, bind_and_activate=True)class socketserver.UnixDatagramServer(server_address, RequestHandlerClass, bind_and_activate=True)
这两个不常用的类类似于TCP和UDP类,但使用Unix域套接字;它们在非unix平台上不可用。
参数与TCPServer相同。
这四个类同步处理请求;每个请求必须完成后才能启动下一个请求。如果每个请求都需要很长时间才能完成,这是不合适的,因为它需要大量的计算,或者因为它返回大量的数据,而客户机处理起来很慢。解决方案是每个请求都创建一个单独的进程或线程来处理;ForkingMixIn和ThreadingMixIn的混合类可以用来支持异步行为。
继承图中有五个类,其中四个表示四种类型的同步服务器
注意UnixDatagramServer派生于UDPServer,而不是UnixStreamServer --- IP和Unix流服务器之间的唯一区别是地址族,这只是在两个Unix服务器类中重复。
|